/*
 * BasicStitching.h
 *
 *  Created on: Mar 1, 2013
 *      Author: RDU
 */

#ifndef BASICSTITCHING_H_
#define BASICSTITCHING_H_

#include "opencv2/opencv_modules.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/stitching/detail/autocalib.hpp"
#include "opencv2/stitching/detail/blenders.hpp"
#include "opencv2/stitching/detail/camera.hpp"
#include "opencv2/stitching/detail/exposure_compensate.hpp"
#include "opencv2/stitching/detail/matchers.hpp"
#include "opencv2/stitching/detail/motion_estimators.hpp"
#include "opencv2/stitching/detail/seam_finders.hpp"
#include "opencv2/stitching/detail/util.hpp"
#include "opencv2/stitching/detail/warpers.hpp"
#include "opencv2/stitching/warpers.hpp"

#include "opencv/cv.h"
#include "wx/wx.h"


using namespace std;
using namespace cv;
using namespace cv::detail;

class AutoStitch
{
public:
	AutoStitch();
	~AutoStitch();

public:
	bool try_use_gpu;


protected:
	vector<Mat> m_cvImages;
	Mat m_stitchedImage;

protected:
	void LoadImages();

public:
	void StitchImages();
	void StitchImages(Mat src1,Mat src2);
	Mat GetStitchedImage();


public:
	// Default command line args
	vector<string> img_names;
	bool preview;
	bool try_gpu;
	double work_megapix;
	double seam_megapix;
	double compose_megapix;
	float conf_thresh;
	string features_type;
	string ba_cost_func;
	string ba_refine_mask;
	bool do_wave_correct;
	WaveCorrectKind wave_correct;
	bool save_graph;
	string save_graph_to;
	string warp_type;
	int expos_comp_type;
	float match_conf;
	string seam_find_type;
	int blend_type;
	float blend_strength;
};


#endif /* BASICSTITCHING_H_ */
